home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / program / c_say.zoo / heure.c < prev    next >
C/C++ Source or Header  |  1992-09-30  |  2KB  |  78 lines

  1. #include <time.h>
  2.  
  3. char * unites[] = {
  4.       "ZEHROH", "AXN", "DAX", "TR<WUH", "KAHTR", "SINK", "SIHS", "SEHT",
  5.       "UXIHT", "NAX1>F","DIHS", "AONZ", "DUXZ", "TREHZ", "KAETOHRZ",
  6.       "KINZ", "SEHZ", "DIHSEHT", "DIHZWIHT", "DIHZNAX1>F", "VAXEHN" };
  7. char *dizaines[] = {
  8.       "VAXEHNT", "TRAENT", "KAERAENT", "SINKAENT" };
  9.  
  10. char *et_une = "EHUXN";
  11. char *HEURES = "AX1R ";
  12. char *ZHEURES = "ZAX1R ";
  13. char *THEURES = "TAX1R ";
  14. char *MINUTES = "MINUXT ";
  15. char *SECONDES = "SAXGOHND ";
  16.  
  17. extern int cdecl say(int mode, ...);
  18. extern int cdecl set_pitch(int val);
  19. extern int cdecl set_rate(int val);
  20.  
  21. main(argc, argv)
  22.     int argc;
  23.     char *argv[];
  24. {
  25.     time_t    horloge;
  26.     int    h;
  27.     struct tm *heure;
  28.     char    format = 0;
  29.  
  30.     while (argc > 1 && argv[1][0] == '-') {
  31.         switch(argv[1][1]) {
  32.         case 'm':    format = 'm'; break;
  33.         case 's':    format = 's'; break;
  34.         case 'r':    set_rate(atoi(argv[1]+2)); break;
  35.         case 'p':    set_pitch(atoi(argv[1]+2)); break;
  36.         }
  37.         argv++;
  38.         argc--;
  39.     }
  40.  
  41.     time(&horloge);
  42.     heure = localtime(&horloge);
  43.  
  44.     h = heure->tm_hour;
  45.     dire(h);
  46.     if (h == 2 || h==3 || h == 22 || h == 23)
  47.         say(0, ZHEURES);
  48.     else if (h == 20)
  49.         say(0, THEURES);
  50.     else
  51.         say(0,HEURES);
  52.  
  53.     dire(heure->tm_min);
  54.     if (format != 'm') {
  55.         say(0, MINUTES);
  56.         if (format != 's') {
  57.             dire(heure->tm_sec);
  58.             say(0, SECONDES);
  59.         }
  60.     }
  61.     say(1,0L);
  62. }
  63.         
  64. dire(nombre)
  65.     int nombre;
  66. {
  67.     if (nombre <= 20)
  68.         say(0, unites[nombre]);
  69.     else {
  70.         int uni = nombre %10;
  71.         say(2, dizaines[nombre/10-2]);
  72.         if (uni == 1)
  73.             say(0,et_une);
  74.         else if (uni)
  75.             say(0,unites[uni]);
  76.     }    
  77. }
  78.